// 这是一个使用lseek在一个文件中连续写入字符串的应用

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>

int main(int argc, char *argv[]){

	int fd;		// 文件标识符
	int temp;	// 临时变量，用来记录文件

	char writebuf[]="This is a lseek test!";

	// 判断是否输入两个参数，其中一个参数为文件名称
	if(argc != 2){
		
		// 如果没有指定文件名称，则提示用户
		printf("Please input the correct name as './exam309lseekFun finename string'\n");
		return -1;
	}
		
	// 如果 不存在该文件则进行创建
	fd = open(*(argv+1), O_RDWR | O_CREAT, S_IRWXU);

	// 打印文件打开情况
	printf("The Descriptor of the filename is : %d\n", fd);

	int seektemp =0;	// 创建临时变量，用来记录偏移量

	// 在writebuf末尾添加'\n'换行符
	strcat(writebuf,"\n");

	// 将writebuf中的数据写入到文件中
	temp = write(fd, writebuf, sizeof(writebuf));	
		
	seektemp = lseek(fd,0,SEEK_CUR);
	printf("The length of the file is %d\n", temp);

	int length_file = 0;
	// 连续写入9次，并用endline换行
	for(int i=0; i<9; i++){
		seektemp += temp;
		
		// 更新偏移量
		seektemp = lseek(fd,length_file, SEEK_CUR);

		temp = write(fd, writebuf, strlen(writebuf));
	}
	
	//关闭文件
	close(fd);

}
